//
//  SEHospitalViewModel.swift
//  SmartEyeForPatient
//
//  Created by qdsg on 2021/4/19.
//

import HandyJSON

enum SEHospitalListType: String {
    case registration = ""
    case examine = "1"

    var title: String {
        switch self {
        case .registration: return "门诊预约"
        case .examine: return "社区检查"
        }
    }

    var heightForRow: CGFloat {
        switch self {
        case .registration: return 110
        case .examine: return UITableView.automaticDimension
        }
    }
}

class SEHospitalListViewModel: SEBaseViewModel {
    var models = [SEHospitalListItem]()

    convenience init(hospitalListType: SEHospitalListType, withLoading: Bool) {
        self.init(withLoading: withLoading)
        self.hospitalListType = hospitalListType
    }

    var hospitalListType: SEHospitalListType = .registration
    var hospitalName: String = ""
    var latitude: String = ""
    var longtitude: String = ""
    var deviceId: String = ""

    var selectedItem = SEHospitalListItem()
    
    func listItem(indexPath: IndexPath) -> SEHospitalListItem {
        return models[indexPath.row]
    }
    func addList(list: [SEHospitalListItem]) {
        models += list
    }

    func requestHospitalList() {
        SEHttpManager.shared.request(SEHospitalAPI.hospitalList(
                                        pageNum: page,
                                        code: "",
                                        province: "",
                                        city: "",
                                        region: "",
                                        hospitalName: hospitalName,
                                        distance: "",
                                        level: "",
                                        lon: longtitude,
                                        lat: latitude,
                                        type: hospitalListType.rawValue,
                                        deviceId: deviceId),
                                     model: SEHospitalListModel.self,
                                     withLoading: withLoading)
        { (model, status) in
            switch status {
            case .success:
                if self.page == 1 {
                    self.models = model?.list ?? []
                } else {
                    self.models.append(contentsOf: model?.list ?? [])
                }
                self.hasMore = self.models.count < model?.total ?? 0
            default:
                self.page == 1 ? (self.page = 1) : (self.page -= 1)
            }
            self.updateData?(status)
        }
    }
}

struct SEHospitalListModel: HandyJSON {
    var pageNum: Int = 0
    var pageSize: Int = 0
    var total: Int = 0
    var list: [SEHospitalListItem] = []
}

// 社区检查 预约挂号医院列表
struct SEHospitalListItem: HandyJSON {
    /**
     医院id
     */
    var id: String = ""
    /**
     医院机构id 
     */
    var orgId: String = ""
    /**
     医院头像（医院列表用）
    */
    var picUrl: String = ""
    /**
     医院头像（医院详情用）
    */
    var imgUrl: String = ""
    /**
     医院名称
     */
    var name: String = ""
    /**
     省
     */
    var province: String = ""
    /**
     市
     */
    var city: String = ""
    /**
     区
     */
    var region: String = ""
    /**
    详细地址
     */
    var address: String = ""
    /**
     0:未完成对接，1完成对接
     */
    var flag: String = ""
    /**
     医院级别（医院列表用）
     */
    var level: String = ""
    /**
     距离
     */
    var distance: String = ""
    /**
     检查项目
     */
    var itemList: [String] = []
    /**
     医院级别:一级甲等等 （医院详情用）
     */
    var hospitalJb: String = ""
    /**
     医院类型:公立医院、民营、眼科（视光）门诊部 （医院详情用）
     */
    var hospitalDb: String = ""
    /**
     医院介绍
     */
    var introduction: String = ""
    /**
     预约可挂号医生数量
     */
    var outpatientCount: String = "0"
    /**
     预约是否可挂号标记：1是0否
     */
    var outpatientFlag: Int = 0
    /**
     图文问诊可咨询数量
     */
    var conversionCount: String = "0"
    /**
     图文问诊是否可咨询：1是0否
     */
    var conversionFlag: Int = 0
    /**
     检查预约可检查项目数量
     */
    var checkCount: String = "0"
    /**
     检查预约是否支持：1是0否
     */
    var checkFlag: Int = 0
    /**
     关注状态1关注2未关注
     */
    var status: Int = 2
}

// 医院详情
struct SEHospitalDetailModel: HandyJSON {
    /**
     医院机构id
     */
    var id: String = ""
    /**
     医院id 医院详情跳转预约挂号用这个id查询医院科室
     */
    var hisHospitalId: String = ""
    /**
     医院头像
    */
    var imgUrl: String = ""
    /**
     医院名称
     */
    var name: String = ""
    /**
     省
     */
    var province: String = ""
    /**
     市
     */
    var city: String = ""
    /**
     区
     */
    var region: String = ""
    /**
    详细地址
     */
    var addr: String = ""
    /**
     距离
     */
    var distance: String = ""
    /**
     检查项目
     */
    var itemList: [String] = []
    /**
     医院级别:一级甲等等
     */
    var hospitalJb: String = ""
    /**
     医院类型:公立医院、民营、眼科（视光）门诊部 （医院详情用）
     */
    var hospitalDb: String = ""
    /**
     医院介绍
     */
    var introduction: String = ""
    /**
     预约可挂号医生数量
     */
    var outpatientCount: String = "0"
    /**
     预约是否可挂号标记：1是0否
     */
    var outpatientFlag: Int = 0
    /**
     图文问诊可咨询数量
     */
    var conversionCount: String = "0"
    /**
     图文问诊是否可咨询：1是0否
     */
    var conversionFlag: Int = 0
    /**
     检查预约可检查项目数量
     */
    var checkCount: String = "0"
    /**
     检查预约是否支持：1是0否
     */
    var checkFlag: Int = 0
    /**
     关注状态1关注2未关注
     */
    var status: Int = 2
    /**
     推荐医生
     */
    var recommentDoctors: [SEDoctorDetail] = []
}


